/*
*	Copyright 2014-2015 Davide Bettoni (https://www.linkedin.com/in/dbettoni)
*	
*	Licensed under the Apache License, Version 2.0 (the "License");
*	you may not use this file except in compliance with the License.
*	You may obtain a copy of the License at
*	
*	    http://www.apache.org/licenses/LICENSE-2.0
*	
*	Unless required by applicable law or agreed to in writing, software
*	distributed under the License is distributed on an "AS IS" BASIS,
*	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*	See the License for the specific language governing permissions and
*	limitations under the License.
*/

package it.agapps.common.collections;

import it.agapps.common.functions.IMatcher;

import java.util.Collection;
import java.util.Iterator;

public class Finder< 
	E extends Object //tipo degli elementi che compongono la collections in ingresso
>{

	public E findFirst(Collection<E> collection, IMatcher<E> matcher) {
		E ret = null;
		for (E e : collection) {
			if (matcher.match(e)) {
				ret = e;
				break;
			}
		}
		return ret;
	}

	public E findFirstAndRemoveIt(Collection<E> collection, IMatcher<E> matcher) {
		E ret = null;
		Iterator<E> i = collection.iterator();
		while (i.hasNext()) {
			E e = (E) i.next();
			if (matcher.match(e)) {				
				ret = e;
				i.remove();
				break;
			}
			
		}
		return ret;
	}


}
